Course Information

Lecture: TTh 12:30-2:20pm, Room 2406 (Lifts 17-18)
Lab: Th 2:30-4:20pm, Room 4210 (Lift 19)

Instructor: Gary Chan, Room 3507 (Lifts 25-26), Department of Computer Science and Engineering
Email: gchan@cse.ust.hk
Office hours: By appointment

TAs:
AU Ka Wai David (kwau@cse.ust.hk)
HE Suining Henry (sheaa@cse.ust.hk)
TAN Jiajie (jtanad@cse.ust.hk)

TA office hours:
Monday, 10:30am - 12:30pm, Room 2606 (lifts 29/30), Jiajie Tan
Wednesday, 4:30-6:30pm, Room 3664 (lifts 31/32), David Au
Friday, 1:30-3:30pm, Room 2606 (lifts 29/30), Henry He

Useful Links

Lecture Schedule

Note: N - Nyhoff 2nd edition, D - Deitel 6th edition, M - Main

Week Date Topics (with video links) PA/WA [Responsible TA] Course Slides Code Examples
1

 

 

1/9/15 Course introduction/ "Hello world!" program

 

PA policies 1. Course intro  

 

3/9/15 Special holiday

Makeup lectures: 2-6pm, Room 2405 (17/18)
  2. C++ overview
 
2 8/9/15 (Tutorial lecture)

C++ variables and operators

 
10/9/15

 

(Tutorial lecture)

Flow control: if and swtich statements
  

 

3. Flow control

 
3 15/9/15 Loop: for, while, and break/ Array

 

  4. Array  
17/9/15

 

Function stack and pass by value

  5. Functions and file I/O

file I/O reference
 
4 22/9/15 Pass by reference and variable scope


 

 
24/9/15 Recursion

 

 

PA1 due [Henry He] (Top coders in the class)
5 29/9/15 File I/O/ Pointer concept


 

  6. Pointer



 

 

 
1/10/15 National holiday

 

 
6 6/10/15

 

Pointer and array/ Dynamic memory allocation


 

 

8/10/15 Struct/ OOP paradigm and class


 

PA2 due [Jiajie Tan] (Top coders in the class) 7. OOP and classes


Codes

7 13/10/15 Information hiding and constructor/ Separate compilation

 

 

 

15/10/15 Mid-term break (1-2:30pm office hours)

 

 

 Midterm: 10:30am-12:00pm, LTE, Saturday, 17/10/2015 (mt, sol)

8 20/10/15 A Time class constructor example; Time class operator overloading/ Destructor;

 

 

 

 

 

 
22/10/15 Other issues:  returning a reference and this pointer; Class implemention of array-based list


 

PA3 due [David Au] (Top coders in the class)

 

8. Lists, stacks and queues   



 

Codes


9 27/10/15 Linked list; Stack and Queue

 

 
29/10/15 Queue applications in binsort and radix sort/ Function overloading and operator overloading

 

  9. Overloading and template


 

Codes


30/10/15
Makeup lecture, 3:00-7:00pm, LT-H
 
10 3/11/15 (Full video lecture)

String and data examples/ Function and class templates

 

 
5/11/15 (Full vieo lecture)

STL: vector and list

 

PA4 due [Jiajie Tan] (Top coders in the class) 10. Standard Template Library (STL)

vector reference
list reference
deque reference
stack and queue reference
string reference  

 

Codes
11  10/11/15 Deque and String STL/ Types of inheritance   11. Inheritance and Polymorphism
 


 

 

 

Codes

 

12/11/15

Inheritance examples (need some little more time)/ Polymorphism (static binding)

 

 

12 17/11/15 Dynamic binding and examples/ Binary tree and traversal

 

  12. Binary Search Trees

Supplementary notes

Codes   
19/11/15 Binary search tree operations

 

PA5 due [David Au] (Top coders in the class)
13 24/11/15 Tree balancing and AVL tree/ Hashing concept

 

 

 

13. Hashing

 

 

 
26/11/15 Linear probing and separate chaining/ Review

 

WA due (to the collection box by Room 4210, Lift 19) [Henry He] (Sol)
  1-19/ 12/15 TA office hours as usual
I will have office hours TTh 1:30-2:30pm (Dec 3, 8, 10, 15 and 17)

Final examination, 12:30-3:30pm, Room 4619 (Lifts 31/32), Friday, December 18, 2015

 

 


Labs [Responsible TA]

If you cannot finish the lab in your lab session, you may submit it through CASS by 7pm Friday that week to the corresponding lab directory.

  1. (3/9/15) Special holiday 
  2. (10/9/15) Software Development Environment with Eclipse [Jiajie Tan]
  3. (17/9/15) Flow control [David Au]
  4. (24/9/15) Array lab [Henry He] 
  5. (1/10/15) National holiday
  6. (8/10/15) Linked list and file I/O  [Henry He] 
  7. (15/10/15) Separate Compilation [Jiajie Tan]
  8. (22/10/15) Class Construction and Initialization
  9. [David Au]
  10. (29/10/15) Pointers and Linked Lists as class objects [Jiajie Tan]
  11. (5/11/15) Operator Overloading [David Au]
  12. (12/11/15) Standard Template Library (STL) [Henry He]
  13. (19/11/15) Virtual Functions [David Au]
  14. (26/11/15) Binary Search Trees [Henry He] 
  15. Bonus [Henry He] (no lab, submit any time by 7pm November 30, 2015, to the corresponding lab directory):
    1. Stack
    2. Introduction to Eclipse Debugger
    3. Function Templates and Class Templates
    4. Inheritance
    5. Hash Tables

Learning Outcomes

On successful completion of this course, students are expected to be able to:

  1. Understand that recursive and non-recursive functions are abstractions of sub-problems in a task.
  2. Describe the concept and know how to use pointers in indirect addressing and dynamic memory allocation.
  3. Understand and know how to implement a few simple data structures as abstract data type in an OOP language such as stacks, lists, queues, binary tree, and hash table.
  4. Understand and implement generic programming using OOP in terms of function overloading, operator overloading, function and class templates.
  5. Understand and implement inheritance and polymorphism using static binding, dynamic binding, and virtual functions.
  6. Understand and be able to implement searching and hashing algorithms using data structures or STL (standard template library).
  7. Write a program of fewer than a thousand lines of OOP codes to solve simple to medium problems with classes.
  8. Use common software tools to develop and debug a program written in an OOP language.
  9. Develop programs using separate compilation and/or STL.